#ifndef __IIC_SIMULATE_CONFIG_H
#define __IIC_SIMULATE_CONFIG_H

#include "stm32f10x.h"
#include "Delay.h"
#include "stdbool.h"

/* 硬件定义 - 根据实际连接修改 */
#define IIC_SCL_PORT    GPIOB       // SCL时钟线GPIO端口
#define IIC_SCL_PIN     GPIO_Pin_6  // SCL引脚号
#define IIC_SDA_PORT    GPIOB       // SDA数据线GPIO端口
#define IIC_SDA_PIN     GPIO_Pin_7  // SDA引脚号

/* 宏定义简化操作 */
#define SDA_SET(n)  ((n) ? GPIO_SetBits(IIC_SDA_PORT, IIC_SDA_PIN) : GPIO_ResetBits(IIC_SDA_PORT, IIC_SDA_PIN))
#define SCL_SET(n)  ((n) ? GPIO_SetBits(IIC_SCL_PORT, IIC_SCL_PIN) : GPIO_ResetBits(IIC_SCL_PORT, IIC_SCL_PIN))
#define SDA_READ    GPIO_ReadInputDataBit(IIC_SDA_PORT, IIC_SDA_PIN)

/* 延时函数定义（需要用户实现） */
#define IIC_Delay() Delay_us(5)     // 标准模式I2C延时(100kHz)

static void IIC_SCL_Config(void);
static void IIC_SDA_Config(GPIOMode_TypeDef mode);
void IIC_Init(void);
void IIC_Start(void);
void IIC_Stop(void);
void IIC_Send_Byte(u8 byte);
bool IIC_Wait_Ack(void);
void IIC_Ack(void);
void IIC_NAck(void);
u8 IIC_Read_Byte(u8 ack);
bool IIC_Write_Data(u8 dev_addr, u8 reg_addr, u8 data);
u8 IIC_Read_Data(u8 dev_addr, u8 reg_addr);

#endif

